home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 3999 < prev    next >
Encoding:
Text File  |  1996-08-05  |  4.7 KB  |  160 lines

  1. Path: gail.ripco.com!mambuhl
  2. From: mambuhl@ripco.com (Martin Ambuhl)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Multiplication Pr 1/2
  5. Date: 1 Feb 1996 10:08:55 GMT
  6. Organization: Ripco Communications, Inc.
  7. Message-ID: <4eq3fn$oip@gail.ripco.com>
  8. NNTP-Posting-Host: golden.ripco.com
  9.  
  10. agent439@aol.com (Agent439)
  11. in <4ep07m$4fn@newsbf02.news.aol.com> asks:
  12.  
  13. >I'm trying to write a C Program that will accept a positive integer that
  14. >can be 100 digits long at a maximum.  So far, my first example (INPUT
  15.  
  16. Sigh.  Since you are storing your numbers in unsigned longs (which have
  17. a length of k bits), the largest _result_ must fit in k bits, about
  18. 0.3k digits.  If k = 64 then .3k = 19.2, so you can see that 100 digits is
  19. excessive.
  20.  
  21. >3125, 25) works except that when it tries to print out the answer, the
  22.  
  23. "works" for a value of "works" that approaches zero.  There are a number
  24. of errors which should keep your code from doing anything useful.
  25.  
  26. >number is wrong.  Now I know there are 2 warnings in it, but I watched
  27.  
  28. One would _hope_ to see a lot more than 2 warnings for this code.  Turn
  29. _all_ your warnings back on.  BTW, there are several aspects of this
  30. code which show that you have not read the FAQ, as you should have before
  31. posting.  It is available by anonymous ftp from rtfm.mit.edu. [These aspects
  32. include void main(), using gets() for input, and the syntax error " //"].
  33. Quickly rectify this before you get labeled as a clueless aol-er.
  34.  
  35. The comparisons of char *s with 0 to determine whether they represent
  36. negative numbers is interestingly creative, if completely meaningless.
  37.  
  38. >variables step-by-step, and it seems to get the right answer.  Please
  39.  
  40. How?
  41.  
  42. >disregard the timer part, and any disagreements what I call my variables.
  43. >Just tell me what types should my variables be or what printf conversion
  44. >should be in for the answer?  Any suggestions to get rid of the warnings
  45. >would be appreciated too. :-0
  46.  
  47. BTW, an 8-line .sig is excessive.  Try to restrain your enthusiasms to
  48. for various games, sports teams, and radio stations to a 4-line .sig.
  49.  
  50. Your original code is at EOM.
  51. Omitting your timing stuff, the following does what you are _trying_
  52. to do in your code.
  53.  
  54. #include <stdio.h>
  55. #include <stdlib.h>
  56.  
  57. int main()
  58. {
  59.     char a[100], b[100];
  60.     unsigned long pa, pb, c;
  61.  
  62.     printf("Enter the Multiplicand:");
  63.     fflush(stdout);
  64.     fgets(a, sizeof a, stdin);
  65.     printf("Enter the Multiplier:");
  66.     fflush(stdout);
  67.     fgets(b, sizeof b, stdin);
  68.  
  69.     pa = atol(a);
  70.     pb = atol(b);
  71.     c = pa * pb;
  72.     printf("The product is =======> %lu \n", c);
  73.     return 0;
  74. }
  75.  
  76. [ === the original code from agent439@aol.com === ]
  77. >Here is the program
  78. >#include <math.h>
  79. >#include <stdio.h>
  80. >#include <time.h>
  81.  
  82. >#define FALSE 0
  83. >#define TRUE !FALSE
  84.  
  85. >float timer(int reset);
  86. >void main(){
  87.  
  88. >        char a[100],b[100];
  89. >        int i, j;
  90. >        int x, y, z;
  91. >        int size,truesize;
  92. >        unsigned long pa,pb, c;
  93.  
  94. >        a==NULL;
  95. >        b==NULL;
  96. >        printf("Enter the Multiplicand:");
  97. >        gets(a);
  98. >        while(a<0){
  99. >                printf("Positive Integers only please!");
  100. >                printf("Enter the Multiplicand:");
  101. >                gets(a);
  102. >        }
  103.  
  104. >        printf("Enter the Multiplier:");
  105. >        gets(b);
  106. >    while(b<0){
  107. >        printf("Positive Integers only please!");
  108. >        printf("Enter the Multiplier:");
  109. >        gets(b);
  110. >    }
  111. >    size=0;
  112. >    pa=0;
  113. >    while(a[size] != 0){
  114. >    size++;
  115. >    }
  116. >    size--;
  117. >    truesize=size;
  118. >    for(size==size;size>=0;size--){
  119. >    pa += (a[size]-48)*(pow(10,(truesize-size))); //change char to integer
  120. >value
  121. >        }
  122. >        size=0;
  123. >        pb=0;
  124. >        while(b[size] != 0){
  125. >        size++;
  126. >        }
  127. >        size--;
  128. >        truesize=size;
  129. >        for(size==size;size>=0;size--){
  130. >        pb += (b[size]-48)*(pow(10,(truesize-size))); //change char to
  131. >integer value
  132. >                }
  133. >        //timer(TRUE);
  134. >        c=0;
  135. >        c+=(pa);//Start C with the amount in pa
  136. >        c*=(pb);    //Multiply pa by the integer value of pb
  137. >        printf("The product is =======> %i \n",c);
  138. >        for(i=0;i<1000;i++){
  139. >                for(j=0;j<1000;j++){
  140. >                        z= x++ + ++y;
  141. >                }
  142. >        }
  143. >        printf("Elapsed time = %.2f seconds\n", timer(FALSE));
  144.  
  145. >        timer(TRUE);
  146. >        for(i = 0; i < 1000; i++){
  147. >                for (j = 0; j < 1000; j++){
  148. >                        y++;
  149. >                        z = x + y;
  150. >                        x++;
  151. >                }
  152. >        }
  153. >        printf("Elapsed time = %.2f seconds\n", timer(FALSE));
  154. >}
  155. >>> Continued to next message
  156.                                                                                                                              
  157. --
  158. * Martin Ambuhl       net: mambuhl@ripco.com
  159. * Chicago, IL (USA)    
  160.